The present invention relates to a method and apparatus for compressing a header field in a data packet. More particularly, the present invention relates to a method and apparatus for compressing a header field of a data packet using a Timer and a Reference Based Scheme.
For Internet Protocol (IP) based real-time multimedia, Real-Time Transfer Protocol (RTP) protocol is predominantly used on top of User Datagram Protocol (UDP/IP. RTP is described in detail in RFC 1889. The size of the combined IP/UDP/RTP headers is at least 40 bytes for IPv4 and at least 60 bytes for IPv6. 40-60 bytes overhead per packet may be considered heavy in systems (e.g., such as cellular networks) where spectral efficiency is a primary concern. Consequently, a need exists for suitable IP/UDP/RTP header compression mechanisms. A current header compression scheme is described in RFC2508, which is able to compress the 40/60 byte IP/UDP/RTP header down to 2 or 4 bytes over point-to-point links. The existing header compression algorithms are based on the observation that most fields of the IP packet headers remain constant in a packet stream during the length of a session. Thus, it is possible to compress the header information by establishing a compression state (the full header information) at the de-compressor and by simply carrying minimal amount of header information from the compressor to the de-compressor.
RFC2508 is based on the idea that most of the time, the RTP fields that change from one packet to the next, such as the RTP time stamp, can be predicted by linear extrapolation. Essentially the only information that has to be sent is a sequence number, used for error and packet loss detection (as well as a context ID). When the sender determines that linear extrapolation cannot be applied to the current packet, a first order difference information with respect to the immediately preceding packet is sent. To initiate the session, a full header is sent. In addition, when the receiver determines that there is packet loss (as detected by a sequence number incrementing by more than 1) the receiver will explicitly request the sender to transmit the full header in order to allow a re-synchronization.
However, the header compression defined in RFC2508 is not well suited for certain environments (such as cellular or wireless environments), where bandwidth is at a premium and errors are common. In the RFC2508 header compression scheme, the RTP time stamp is assumed to have most of the time a linearly increasing pattern. When the header conforms to the pattern, essentially only a short sequence number is needed in the compressed header. When the header does not conform to the to pattern, the difference between the RTP time stamps of the current header and of the previous one is sent in the compressed header. Further optimization is possible by using a coding table. This approach has three drawbacks. The first one is that it is not robust to errors, as the loss of the previous header will invalidate the decompression of the current header. The second one is that RTP time stamp differences or jumps can be very large, thus overflowing the coding look up table. For example, if the medium is voice, such large differences can be caused by a silence interval. The third one is that the size of the resulting encoded difference is variable, which makes it more difficult to predict and manage the bandwidth to be allocated.
Therefore, there is a need for a header compression scheme that can accommodate an arbitrary jump in the value of the field (e.g., in the value of the RTP time stamp), yields a more consistent or constant size, and is more robust to errors.
According to an embodiment of the present invention, a timer based header decompression technique is provided. An RTP source generates a header field, such as an RTP time stamp. The time stamp is sent over a network to a compressor. At the compressor, a jitter reduction function (JRF) is used to determine whether the jitter of the received time stamp (header) is excessive. If the jitter is excessive, the packet is discarded. Otherwise, the compressor calculates a compressed header field (compressed time stamp) based on the RTP time stamp and an initial value of the time stamp. The compressed time stamp represents jitter which is calculated as an effect the network between the source and the decompressor has on the transmission of packets. The calculated jitter is a cumulation of network jitter representing the effect the network between the source and the compressor has on the transmission of packets and radio jitter representing the effect the network between the compressor and decompressor has on the transmission of packets. It should be noted that the term xe2x80x9cnetworkxe2x80x9d as used herein is intended to be a broad term so as not to preclude, for example, radio links in a wireless telecommunications network. The RTP packet, including the compressed time stamp, is then transmitted over a link or network to a decompressor.
The decompressor decompresses the compressed time stamp by first calculating an estimate or approximation of the time stamp based on the current value of a timer located at the terminal (i.e., based on elapsed time). The approximation of the time stamp is then refined or corrected based on the compressed time stamp provided in the packet header. In this manner, the time stamp for the current packet (header) is regenerated based on a local timer and a compressed time stamp provided in the current header. The packet and the regenerated time stamp are then provided to an RTP endpoint for processing.
The timer-based scheme of the present invention includes several advantages. The term xe2x80x9ctimer based schemexe2x80x9d as used herein is inclusive of the timer based scheme using a compressed time stamp and the timer and reference based scheme as disclosed herein. The size of the compressed time stamp (or other header field) is constant and small. Furthermore, the size does not change as a function of the length of interval of silence. No synchronization is required between the timer process at the RTP source (generating the time stamp) and the timer at the decompressor process. Also, this technique is robust to errors, as the partial time stamp information in the compressed header is self contained and only needs to be combined with the decompressor timer value to yield the full RTP time stamp value. Loss or corruption of a header will not invalidate subsequent compressed headers.
A second embodiment of the present invention provides a header-stripping scheme in which the header (e.g., including the RTP time stamp) is stripped or removed from the RTP packet prior to transmission. A header stripper and a header generator are connected through a circuit like connection (e.g., circuit or virtual circuit) or an essentially constant bit rate channel. After initialization, the header stripper strips or removes the header (including removing the time stamp and sequence number) from each packet and then transmits the headerless packets to the header regenerator. To eliminate packet jitter at the header stripper, the packets can be transmitted at a time spacing according to the RTP time stamp (TS) in the header. Therefore, in this embodiment, the time stamp is not explicitly provided in the RTP packet (nor even a compressed time stamp). Rather, timing information is implicitly provided to the to the header regenerator based upon an essentially constant bit-rate channel between the header stripper and regenerator. The essentially constant bit-rate channel can be provided in several different ways.
In this second embodiment, after initialization occurs (e.g., providing the initial sequence number and time stamp to the header regenerator) the header regenerator can regenerate the time stamps for sequential packets by incrementing a local time stamp counter by TS_stride every T msecs, and regenerate the packet sequence numbers by incrementing a local SN counter by 1 every packet duration. These fields can be regenerated based only on a local timer or counter due to the essentially constant bit rate channel provided between the header stripper and header regenerator in which no packet jitter is introduced. Therefore, after initialization, these header fields can be regenerated at the header regenerator with reference only to a local clock.
However, one or more basic discontinuity events (e.g., change in packet size or TS_stride, a non-linear shift in the time stamp, etc.) may occur which, if not addressed, could likely invalidate the header-stripping approach which relies only on a local timer or clock for field regeneration. A header string is a sequence of packet headers having known or linearly predictable fields. The transition from one string to another can be caused by any of several discontinuity events. When this occurs, the header stripper identifies discontinuity event and sends updated header information related to the event to the header regenerator to allow time stamp and sequence number regeneration to continue. A similar technique of providing updated header information can be used when there is a handover as well.